package com.xiangxg.jvm.classloader;

import java.lang.reflect.Method;

/**
 * 每个类加载器都有自己的命名空间，命名空间由该加载器及所有父加载器所加载的类组成
 * 删除classpath里的MyPerson的class文件
 * 运行结果为false
 * 原因为两个class文件由loader1和loader2不同的类加载器加载
 * loader1和loader2不存在双亲关系，不在同一个命名空间
 */
public class MyTest21 {
    public static void main(String[] args)throws Exception {
        MyTest16 loader1 = new MyTest16("loader1");
        MyTest16 loader2 = new MyTest16("loader2");

        loader1.setPath("C:\\java\\code\\");
        loader2.setPath("C:\\java\\code\\");

        Class<?> clazz1 = loader1.loadClass("com.xiangxg.jvm.classloader.MyPerson");
        Class<?> clazz2 = loader2.loadClass("com.xiangxg.jvm.classloader.MyPerson");

        System.out.println(clazz1 == clazz2);

        Object object1 = clazz1.newInstance();
        Object object2 = clazz2.newInstance();

        Method method = clazz1.getMethod("setMyPerson", Object.class);
        method.invoke(object1,object2);
    }
}
